<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of form_acts_controller
 *
 * @author fredy
 */
class FormActsController extends AppController {

    //put your code here
    var $name = "FormActs";

    public function index() {
        $this->layout = "ajax";
        $user_id = $this->Auth->user('id');
        $group_id = $this->Auth->user('group_id');
        $proyect_id = $this->Session->read('proy_id');
        if ($proyect_id != "") {
            $this->set('formActs', $this->FormAct->find("all", array('conditions' => array('FormAct.proyect_id' => $proyect_id), 'order' => array('FormAct.id DESC'))));
            $this->set('proyect_id', $proyect_id);
            $this->set('user_id', $user_id);
            $this->set('group_id', $group_id);
        } else {
            $this->Session->setFlash('No se ha seleccionado proyecto', 'flash_custom');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        }
    }

    public function report() {
        App::Import('model', 'UserProyect');
        $userProyect = new UserProyect();
        $userProyect->recursive = -1;

        App::Import('model', 'FormActUser');
        $formActUser = new FormActUser();
        $formActUser->recursive = -1;

        App::Import('model', 'User');
        $user = new User();
        $user->recursive = -1;

        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_actas_de_panel" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $header_row = array("Id", "Fecha inicio sesión", "Fecha fin sesión", "Número acta", "Proyecto", "Relator", "Evaluador", "Lugar", "VPN", "BC", "Congruecia técnica", "Suficiencia técnica",
            "Congruencia social", "Suficiencia social", "Congruencia financiera", "Suficiencia financiera", "Congruencia ambiental", "Suficiencia ambiental", "Reproceso", "Aprobación reproceso", "Relato", "Elegibilidad", "Referencia", "Subsidio predio",
            "Contrapartida predio", "Crédito predio", "Subsidio proyecto", "Contrapartida proyecto", "Crédito proyecto", "Calificación indicadores financieros", "Observaciones", "Área explotación proyectada", "Estado aclaraciones");

        $newRow = array();

        foreach ($header_row as $a) {
            $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
        }

        fputcsv($csv_file, $newRow, ';', '"');

        $query = "SELECT form_act.id, form_act.fecha_inicio_sesion, form_act.fecha_fin_sesion, 
            form_act.numero_acta, proyect.codigo, form_act.lugar, form_act.vpn, form_act.bc, 
            form_act.congruencia_tecnica, form_act.suficiencia_tecnica, form_act.congruencia_social, 
            form_act.suficiencia_social, form_act.congruencia_ambiental, form_act.suficiencia_ambiental, 
            form_act.congruencia_financiera, form_act.suficiencia_financiera, form_act.reproceso, 
            form_act.aprobacion_reproceso, form_act.relato, form_act.elegibilidad, form_act.referencia, 
            form_act.subsidio_predio, form_act.contrapartida_predio, form_act.credito_predio, 
            form_act.subsidio_proyecto, form_act.contrapartida_proyecto, form_act.credito_proyecto, 
            form_act.calificacion_indicadores_financieros, form_act.observaciones, form_act.area_explotacion_proyectada, 
            form_act.estado_aclaraciones, user_id, proyect.id 
                    FROM form_acts form_act
                    LEFT JOIN proyects proyect ON form_act.proyect_id = proyect.id
                    WHERE 1";

        $results = $this->FormAct->query($query);

        $userProyect->recursive = 2;

        foreach ($results as $result) {

            //Busco el relator
            $relator_id = $formActUser->find('first', array('conditions' => array('FormActUser.form_act_id' => $result['form_act']['id'], 'FormActUser.rol' => 'Relator'), 'fields' => array('FormActUser.user_id')));
            $relator = $user->find('first', array('conditions' => array('User.id' => $relator_id['FormActUser']['user_id']), 'fields' => array('User.nombre', 'User.primer_apellido', 'User.segundo_apellido')));

            //Busco evaluador
            $evaluador_id = $userProyect->find('first', array('conditions' => array('Proyect.id' => $result['proyect']['id'], 'User.group_id' => 15), 'fields' => array('UserProyect.user_id')));
            $evaluador = $user->find('first', array('conditions' => array('User.id' => $evaluador_id['UserProyect']['user_id']), 'fields' => array('User.nombre', 'User.primer_apellido', 'User.segundo_apellido')));


            $row = array(
                $result['form_act']['id'],
                $result['form_act']['fecha_inicio_sesion'],
                $result['form_act']['fecha_fin_sesion'],
                $result['form_act']['numero_acta'],
                $result['proyect']['codigo'],
                //relator
                $relator['User']['nombre'] . " " . $relator['User']['primer_apellido'] . " " . $relator['User']['segundo_apellido'],
                //evaluador
                $evaluador['User']['nombre'] . " " . $evaluador['User']['primer_apellido'] . " " . $evaluador['User']['segundo_apellido'],
                $result['form_act']['lugar'],
                $result['form_act']['vpn'],
                $result['form_act']['bc'],
                $result['form_act']['congruencia_tecnica'],
                $result['form_act']['suficiencia_tecnica'],
                $result['form_act']['congruencia_social'],
                $result['form_act']['suficiencia_social'],
                $result['form_act']['congruencia_financiera'],
                $result['form_act']['suficiencia_financiera'],
                $result['form_act']['congruencia_ambiental'],
                $result['form_act']['suficiencia_ambiental'],
                $result['form_act']['reproceso'],
                $result['form_act']['aprobacion_reproceso'],
                $result['form_act']['relato'],
                $result['form_act']['elegibilidad'],
                $result['form_act']['referencia'],
                $result['form_act']['subsidio_predio'],
                $result['form_act']['contrapartida_predio'],
                $result['form_act']['credito_predio'],
                $result['form_act']['subsidio_proyecto'],
                $result['form_act']['contrapartida_proyecto'],
                $result['form_act']['credito_proyecto'],
                $result['form_act']['calificacion_indicadores_financieros'],
                $result['form_act']['observaciones'],
                $result['form_act']['area_explotacion_proyectada'],
                $result['form_act']['estado_aclaraciones'],
            );

            $newRow = array();

            foreach ($row as $a) {
                $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
            }

            fputcsv($csv_file, $newRow, ';', '"');
        }

        //aquí va la información que completa el reporte.
        //fputcsv($csv_file, $newRow, ';', '"');

        fclose($csv_file);
    }

    public function add($proyect_id) {
        $this->layout = "ajax";
        $this->set('proyect_id', $proyect_id);
        $this->set('user_id', $this->Auth->user('id'));
        if (!empty($this->data)) {
            if ($this->FormAct->saveAll($this->data)) {
                $this->Session->setFlash(_("Acta creada con éxito"));

                //Obtengo el id del registro guardado, opero y lo guardo en el campo del número del acta.
                $this->FormAct->saveField('numero_acta', $this->FormAct->id - 61);

                $this->redirect(array('controller' => 'FormActs', 'action' => 'index'));
            }
        } else {
            $this->set('proyect_id', $proyect_id);
        }
    }

    public function edit($id) {
        $this->layout = "ajax";
        if (!empty($this->data)) {
            if ($this->FormAct->saveAll($this->data)) {
                $this->Session->setFlash(_("Acta Editada con éxito"));
                $this->redirect(array('controller' => 'FormActs', 'action' => 'index'));
            } else {
                $this->data = $this->FormAct->find('first', array('conditions' => array('FormAct.id' => $id)));
            }
        } else {
            $this->data = $this->FormAct->find('first', array('conditions' => array('FormAct.id' => $id)));
        }
    }

    //No se permite borrar actas para ningún usuario.
    public function delete($id) {
        if ($this->FormAct->delete($id)) {
            $this->Session->setFlash(_("Acta borrada con éxito"));
            $this->redirect(array('controller' => 'FormActs', 'action' => 'index'));
        }
    }

    public function print_letter($id) {
        $this->layout = "ajax";
        $proyect_id = $this->Session->read('proy_id');

        App::Import('Model', 'Proyect');
        App::Import('Model', 'FinalEvaluation');
        App::Import('Model', 'User');
        App::Import('Model', 'Proposer');
        App::Import('Model', 'FinalProductiveLine');
        App::Import('Model', 'Candidates');
        App::Import('Model', 'Property');
        App::Import('Model', 'ProyectDocument');
        App::Import('Model', 'Counterpart');
        App::Import('Model', 'EvaluationConstraint');
        App::Import('Model', 'FormActUser');
        App::Import('Model', 'EvaluationAppraisal');
        App::Import('Model', 'TopographicMap');

        App::Import('Model', 'InitialEvaluation');
        $initialEvaluation = new InitialEvaluation();
        $initialEvaluation->recursive = -1;

        $avaluo = new EvaluationAppraisal();
        $avaluo->recursive = -1;
        $plano = new TopographicMap();
        $plano->recursive = -1;
        $proyect = new Proyect();
        $proyect->recursive = -1;
        $codigo = $proyect->field('codigo', array('Proyect.id' => $proyect_id));
        $final_evaluation = new FinalEvaluation();
        $final_evaluation->recursive = -1;
        $usuario = new User();
        $usuario->recursive = -1;
        $proposer = new Proposer();
        $proposer->recursive = -1;
        $finalProductiveLines = new FinalProductiveLine();
        $finalProductiveLines->recursive = 1;
        $familias = new Candidate();
        $familias->recursive = -1;
        $properties = new Property();
        $properties->recursive = 1;
        $convocatoria = new Call();
        $convocatoria->recursive = -1;
        $contrapartida = new Counterpart();
        $contrapartida->recursive = -1;
        $condicionamiento = new EvaluationConstraint();
        $condicionamiento->recursive = -1;
        $formActUsers = new FormActUser();
        $formActUsers->recursive = 1;

        $this->set('proyect_id', $proyect_id);
        $this->set('codigo_proyect', $codigo);

        $acta = $this->FormAct->find('first', array('conditions' => array('FormAct.id' => $id)));
        $ultima_evaluacion_final = $final_evaluation->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $proyect_id), 'fields' => array('FinalEvaluation.id', 'FinalEvaluation.user_id', 'FinalEvaluation.nombre_proyecto',
                'FinalEvaluation.calificacion_anexos', 'FinalEvaluation.concepto_anexos', 'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.concepto_ubicacion', 'FinalEvaluation.calificacion_area_util', 'FinalEvaluation.magnitud_area_util', 'FinalEvaluation.concepto_area_util',
                'FinalEvaluation.calificacion_suelos', 'FinalEvaluation.concepto_suelos', 'FinalEvaluation.calificacion_claseV', 'FinalEvaluation.concepto_claseV', 'FinalEvaluation.calificacion_mejoras_santuarias', 'FinalEvaluation.concepto_mejoras_santuarias',
                'FinalEvaluation.tir', 'FinalEvaluation.familias_habilitadas', 'FinalEvaluation.excedentes', 'FinalEvaluation.subsidio_predios_real', 'FinalEvaluation.subsidio_proyecto_real',
                'FinalEvaluation.calificacion_aspectos_productivos', 'FinalEvaluation.calificacion_aspectos_sociales', 'FinalEvaluation.calificacion_aspectos_financieros', 'FinalEvaluation.tipo_proyecto', 'FinalEvaluation.calificacion_aspectos_ambientales',
                'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.concepto_ubicacion', 'FinalEvaluation.calificacion_suelos_total', 'FinalEvaluation.concepto_elegibilidad_integral', 'FinalEvaluation.calificacion_elegibilidad_integral'), 'order' => array('FinalEvaluation.id' => "DESC")));

        $evaluador = $usuario->find('first', array('conditions' => array('User.id' => $ultima_evaluacion_final['FinalEvaluation']['user_id']), 'fields' => array('User.nombre', 'User.primer_apellido', 'User.segundo_apellido')));

        $proponente = $proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $proyect_id), 'fields' => array('Proposer.nombre')));

        $lineas_productivas = $finalProductiveLines->find('all', array('conditions' => array('FinalProductiveLine.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('FinalProductiveLine.area', 'FinalProductiveLine.observacion', 'ProductiveActivity.nombre')));

        //cantidad de familias que tenia el proyecto inicialmente.

        $familias_iniciales_principales = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase' => '1')));
        $familias_iniciales_suplentes = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase <>' => '1')));
        $familias_habilitadas_principales = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase' => '1', 'Candidate.estado_filtro' => array('1', '5', '6'))));
        $familias_habilitadas_suplentes = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase <>' => '1', 'Candidate.estado_filtro' => array('1', '5', '6'))));

        //busco los datos de los predios

        $predios = $properties->find('all', array('conditions' => array('Property.proyect_id' => $proyect_id), 'fields' => array('Property.valor_negociacion', 'Property.id', 'Property.nombre', 'City.departament_id', 'City.name', 'Property.matricula', 'Property.area_titulo')));

        $revision_avaluos = "Revisado";
        $revision_planos = "Revisado";

        if ($ultima_evaluacion_final['FinalEvaluation']['calificacion_elegibilidad_integral'] == 'Elegible' or $ultima_evaluacion_final['FinalEvaluation']['calificacion_elegibilidad_integral'] == 'Elegible con recomendaciones') {
            foreach ($predios as $predio) {
                //busco el ultimo avaluo de cada predio
                $avaluo1 = $avaluo->find('first', array('conditions' => array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'fields' => array('EvaluationAppraisal.calificacion'), 'order' => array('EvaluationAppraisal.id' => 'DESC')));
                //busco el ultimo plano de cada predio
                $plano1 = $plano->find('first', array('conditions' => array('TopographicMap.property_id' => $predio['Property']['id']), 'fields' => array('TopographicMap.calificacion'), 'order' => array('TopographicMap.id' => 'DESC')));

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 2) {
                    $revision_avaluos = "Subsanable";
                }
                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 0) {
                    $revision_avaluos = "Sin calificar";
                }

                if ($plano1['TopographicMap']['calificacion'] == 2) {
                    $revision_planos = "Subsanable";
                }
                if ($plano1['TopographicMap']['calificacion'] == 0) {
                    $revision_planos = "Sin calificar";
                }
            }
        } else {
            foreach ($predios as $predio) {
                //busco el ultimo avaluo de cada predio
                $avaluo1 = $avaluo->find('first', array('conditions' => array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'fields' => array('EvaluationAppraisal.calificacion'), 'order' => array('EvaluationAppraisal.id' => 'DESC')));
                //busco el ultimo plano de cada predio
                $plano1 = $plano->find('first', array('conditions' => array('TopographicMap.property_id' => $predio['Property']['id']), 'fields' => array('TopographicMap.calificacion'), 'order' => array('TopographicMap.id' => 'DESC')));

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 2 and $revision_avaluos == 'Revisado') {
                    $revision_avaluos = "Subsanable";
                }

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 0 and $revision_avaluos == 'Revisado') {
                    $revision_avaluos = "Sin registro";
                }

                if ($plano1['TopographicMap']['calificacion'] == 2 and $revision_planos == "Revisado") {
                    $revision_planos = "Subsanable";
                }

                if ($plano1['TopographicMap']['calificacion'] == 0 and $revision_planos == "Revisado") {
                    $revision_planos = "Sin registro";
                }
            }
        }

        $this->set('calificacionEvaluacionInicial', $initialEvaluation->field('InitialEvaluation.calificacion_integral', array('InitialEvaluation.proyect_id' => $proyect_id), 'InitialEvaluation.id DESC'));

        //busco el salario minimo de la convocatoria

        $salarioMinimo = $convocatoria->field('valor_smmv', array('Call.id' => 1));

        //se envian datos de la contrapartida
        $this->set("contapartidas_certificadas_predio", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Certificada', 'Counterpart.clase' => 'Predio', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_otra_predio", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Otra', 'Counterpart.clase' => 'Predio', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_certificadas_proyecto", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Certificada', 'Counterpart.clase' => 'Proyecto', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_otra_proyecto", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Otra', 'Counterpart.clase' => 'Proyecto', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));

        $condicionadoCabidaFamiliar = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '6', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoArea = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '4', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoNegociacion = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '5', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoObservacion = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '7', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));

        $condicionamientosFamiliares = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '6', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosArea = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '4', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosNegociacion = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '5', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosObservaciones = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '7', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));

        //participantes

        $participantes = $formActUsers->find("all", array(
            'conditions' => array('FormActUser.form_act_id' => $id),
            'fields' => array('FormActUser.id', 'FormActUser.rol', 'FormActUser.user_id', 'User.nombre', 'User.primer_apellido', 'User.segundo_apellido'),
            'order' => array('FormActUser.rol ASC')));

        //envio datos a vista
        $this->set('acta', $acta);
        $this->set('ultima_evaluacion_final', $ultima_evaluacion_final);
        $this->set('evaluador', $evaluador);
        $this->set('proponente', $proponente);
        $this->set('lineas_productivas', $lineas_productivas);
        $this->set('familias_iniciales_principales', $familias_iniciales_principales);
        $this->set('familias_iniciales_suplentes', $familias_iniciales_suplentes);
        $this->set('familias_habilitadas_principales', $familias_habilitadas_principales);
        $this->set('familias_habilitadas_suplentes', $familias_habilitadas_suplentes);
        $this->set('predios', $predios);
        $this->set('salarioMinimo', $salarioMinimo);
        $this->set('condicionadoCabidaFamiliar', $condicionadoCabidaFamiliar);
        $this->set('condicionadoArea', $condicionadoArea);
        $this->set('condicionadoNegociacion', $condicionadoNegociacion);
        $this->set('condicionamientosFamiliares', $condicionamientosFamiliares);
        $this->set('condicionamientosArea', $condicionamientosArea);
        $this->set('condicionamientosNegociacion', $condicionamientosNegociacion);
        $this->set('condicionadoObservacion', $condicionadoObservacion);
        $this->set('condicionamientosObservaciones', $condicionamientosObservaciones);
        $this->set('participantes', $participantes);
        $this->set('revision_avaluos', $revision_avaluos);
        $this->set('revision_planos', $revision_planos);
    }

    public function print_act($id) {
        $this->layout = "ajax";
        $proyect_id = $this->Session->read('proy_id');

        App::Import('Model', 'Proyect');
        App::Import('Model', 'FinalEvaluation');
        App::Import('Model', 'User');
        App::Import('Model', 'Proposer');
        App::Import('Model', 'FinalProductiveLine');
        App::Import('Model', 'Candidates');
        App::Import('Model', 'Property');
        App::Import('Model', 'ProyectDocument');
        App::Import('Model', 'Counterpart');
        App::Import('Model', 'EvaluationConstraint');
        App::Import('Model', 'FormActUser');
        App::Import('Model', 'EvaluationAppraisal');
        App::Import('Model', 'TopographicMap');

        App::Import('Model', 'InitialEvaluation');
        $initialEvaluation = new InitialEvaluation();
        $initialEvaluation->recursive = -1;

        $avaluo = new EvaluationAppraisal();
        $avaluo->recursive = -1;
        $plano = new TopographicMap();
        $plano->recursive = -1;
        $proyect = new Proyect();
        $proyect->recursive = -1;
        $codigo = $proyect->field('codigo', array('Proyect.id' => $proyect_id));
        $final_evaluation = new FinalEvaluation();
        $final_evaluation->recursive = -1;
        $usuario = new User();
        $usuario->recursive = -1;
        $proposer = new Proposer();
        $proposer->recursive = -1;
        $finalProductiveLines = new FinalProductiveLine();
        $finalProductiveLines->recursive = 1;
        $familias = new Candidate();
        $familias->recursive = -1;
        $properties = new Property();
        $properties->recursive = 1;
        $convocatoria = new Call();
        $convocatoria->recursive = -1;
        $contrapartida = new Counterpart();
        $contrapartida->recursive = -1;
        $condicionamiento = new EvaluationConstraint();
        $condicionamiento->recursive = -1;
        $formActUsers = new FormActUser();
        $formActUsers->recursive = 1;

        $this->set('proyect_id', $proyect_id);
        $this->set('codigo_proyect', $codigo);

        $acta = $this->FormAct->find('first', array('conditions' => array('FormAct.id' => $id)));
        $ultima_evaluacion_final = $final_evaluation->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $proyect_id), 'fields' => array('FinalEvaluation.id', 'FinalEvaluation.user_id', 'FinalEvaluation.nombre_proyecto',
                'FinalEvaluation.calificacion_anexos', 'FinalEvaluation.concepto_anexos', 'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.concepto_ubicacion', 'FinalEvaluation.calificacion_area_util', 'FinalEvaluation.magnitud_area_util', 'FinalEvaluation.concepto_area_util',
                'FinalEvaluation.calificacion_suelos', 'FinalEvaluation.concepto_suelos', 'FinalEvaluation.calificacion_claseV', 'FinalEvaluation.concepto_claseV', 'FinalEvaluation.calificacion_mejoras_santuarias', 'FinalEvaluation.concepto_mejoras_santuarias',
                'FinalEvaluation.tir', 'FinalEvaluation.familias_habilitadas', 'FinalEvaluation.excedentes', 'FinalEvaluation.subsidio_predios_real', 'FinalEvaluation.subsidio_proyecto_real',
                'FinalEvaluation.calificacion_aspectos_productivos', 'FinalEvaluation.calificacion_aspectos_sociales', 'FinalEvaluation.calificacion_aspectos_financieros', 'FinalEvaluation.tipo_proyecto', 'FinalEvaluation.calificacion_aspectos_ambientales',
                'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.concepto_ubicacion', 'FinalEvaluation.calificacion_suelos_total', 'FinalEvaluation.concepto_elegibilidad_integral', 'FinalEvaluation.calificacion_elegibilidad_integral',
                'FinalEvaluation.concepto_aspectos_productivos', 'FinalEvaluation.concepto_aspectos_sociales', 'FinalEvaluation.concepto_aspectos_financieros', 'FinalEvaluation.concepto_aspectos_ambientales'
            ), 'order' => array('FinalEvaluation.id' => "DESC")));

        $evaluador = $usuario->find('first', array('conditions' => array('User.id' => $ultima_evaluacion_final['FinalEvaluation']['user_id']), 'fields' => array('User.nombre', 'User.primer_apellido', 'User.segundo_apellido')));

        $proponente = $proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $proyect_id), 'fields' => array('Proposer.nombre')));

        $lineas_productivas = $finalProductiveLines->find('all', array('conditions' => array('FinalProductiveLine.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('FinalProductiveLine.area', 'FinalProductiveLine.observacion', 'ProductiveActivity.nombre')));

        //cantidad de familias que tenia el proyecto inicialmente.

        $familias_iniciales_principales = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase' => '1')));
        $familias_iniciales_suplentes = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase <>' => '1')));
        $familias_habilitadas_principales = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase' => '1', 'Candidate.estado_filtro' => array('1', '5', '6'))));
        $familias_habilitadas_suplentes = $familias->find('count', array('conditions' => array('Candidate.proyect_id' => $proyect_id, 'Candidate.clase <>' => '1', 'Candidate.estado_filtro' => array('1', '5', '6'))));

        //busco los datos de los predios

        $predios = $properties->find('all', array('conditions' => array('Property.proyect_id' => $proyect_id), 'fields' => array('Property.valor_negociacion', 'Property.id', 'Property.nombre', 'City.departament_id', 'City.name', 'Property.matricula', 'Property.area_titulo')));

        $revision_avaluos = "Revisado";
        $revision_planos = "Revisado";

        if ($ultima_evaluacion_final['FinalEvaluation']['calificacion_elegibilidad_integral'] == 'Elegible' or $ultima_evaluacion_final['FinalEvaluation']['calificacion_elegibilidad_integral'] == 'Elegible con recomendaciones') {
            foreach ($predios as $predio) {
                //busco el ultimo avaluo de cada predio
                $avaluo1 = $avaluo->find('first', array('conditions' => array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'fields' => array('EvaluationAppraisal.calificacion'), 'order' => array('EvaluationAppraisal.id' => 'DESC')));
                //busco el ultimo plano de cada predio
                $plano1 = $plano->find('first', array('conditions' => array('TopographicMap.property_id' => $predio['Property']['id']), 'fields' => array('TopographicMap.calificacion'), 'order' => array('TopographicMap.id' => 'DESC')));

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 2) {
                    $revision_avaluos = "Subsanable";
                }
                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 0) {
                    $revision_avaluos = "Sin calificar";
                }

                if ($plano1['TopographicMap']['calificacion'] == 2) {
                    $revision_planos = "Subsanable";
                }
                if ($plano1['TopographicMap']['calificacion'] == 0) {
                    $revision_planos = "Sin calificar";
                }
            }
        } else {
            foreach ($predios as $predio) {
                //busco el ultimo avaluo de cada predio
                $avaluo1 = $avaluo->find('first', array('conditions' => array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'fields' => array('EvaluationAppraisal.calificacion'), 'order' => array('EvaluationAppraisal.id' => 'DESC')));
                //busco el ultimo plano de cada predio
                $plano1 = $plano->find('first', array('conditions' => array('TopographicMap.property_id' => $predio['Property']['id']), 'fields' => array('TopographicMap.calificacion'), 'order' => array('TopographicMap.id' => 'DESC')));

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 2 and $revision_avaluos == 'Revisado') {
                    $revision_avaluos = "Subsanable";
                }

                if ($avaluo1['EvaluationAppraisal']['calificacion'] == 0 and $revision_avaluos == 'Revisado') {
                    $revision_avaluos = "Sin registro";
                }

                if ($plano1['TopographicMap']['calificacion'] == 2 and $revision_planos == "Revisado") {
                    $revision_planos = "Subsanable";
                }

                if ($plano1['TopographicMap']['calificacion'] == 0 and $revision_planos == "Revisado") {
                    $revision_planos = "Sin registro";
                }
            }
        }

        $this->set('calificacionEvaluacionInicial', $initialEvaluation->field('InitialEvaluation.calificacion_integral', array('InitialEvaluation.proyect_id' => $proyect_id), 'InitialEvaluation.id DESC'));

        //busco el salario minimo de la convocatoria

        $salarioMinimo = $convocatoria->field('valor_smmv', array('Call.id' => 1));

        //se envian datos de la contrapartida
        $this->set("contapartidas_certificadas_predio", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Certificada', 'Counterpart.clase' => 'Predio', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_otra_predio", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Otra', 'Counterpart.clase' => 'Predio', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_certificadas_proyecto", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Certificada', 'Counterpart.clase' => 'Proyecto', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $this->set("contapartidas_otra_proyecto", $contrapartida->field('sum(valor)', array('Counterpart.tipo' => 'Otra', 'Counterpart.clase' => 'Proyecto', 'Counterpart.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));

        $condicionadoCabidaFamiliar = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '6', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoArea = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '4', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoNegociacion = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '5', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));
        $condicionadoObservacion = $condicionamiento->find('count', array('conditions' => array('EvaluationConstraint.constraint_id' => '7', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id'])));

        $condicionamientosFamiliares = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '6', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosArea = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '4', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosNegociacion = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '5', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));
        $condicionamientosObservaciones = $condicionamiento->find('all', array('conditions' => array('EvaluationConstraint.constraint_id' => '7', 'EvaluationConstraint.final_evaluation_id' => $ultima_evaluacion_final['FinalEvaluation']['id']), 'fields' => array('EvaluationConstraint.descripcion'), 'order' => array('EvaluationConstraint.id DESC')));

        //participantes

        $participantes = $formActUsers->find("all", array(
            'conditions' => array('FormActUser.form_act_id' => $id),
            'fields' => array('FormActUser.id', 'FormActUser.rol', 'FormActUser.user_id', 'User.nombre', 'User.primer_apellido', 'User.segundo_apellido'),
            'order' => array('FormActUser.rol ASC')));

        //envio datos a vista
        $this->set('acta', $acta);
        $this->set('ultima_evaluacion_final', $ultima_evaluacion_final);
        $this->set('evaluador', $evaluador);
        $this->set('proponente', $proponente);
        $this->set('lineas_productivas', $lineas_productivas);
        $this->set('familias_iniciales_principales', $familias_iniciales_principales);
        $this->set('familias_iniciales_suplentes', $familias_iniciales_suplentes);
        $this->set('familias_habilitadas_principales', $familias_habilitadas_principales);
        $this->set('familias_habilitadas_suplentes', $familias_habilitadas_suplentes);
        $this->set('predios', $predios);
        $this->set('salarioMinimo', $salarioMinimo);
        $this->set('condicionadoCabidaFamiliar', $condicionadoCabidaFamiliar);
        $this->set('condicionadoArea', $condicionadoArea);
        $this->set('condicionadoNegociacion', $condicionadoNegociacion);
        $this->set('condicionamientosFamiliares', $condicionamientosFamiliares);
        $this->set('condicionamientosArea', $condicionamientosArea);
        $this->set('condicionamientosNegociacion', $condicionamientosNegociacion);
        $this->set('condicionadoObservacion', $condicionadoObservacion);
        $this->set('condicionamientosObservaciones', $condicionamientosObservaciones);
        $this->set('participantes', $participantes);
        $this->set('revision_avaluos', $revision_avaluos);
        $this->set('revision_planos', $revision_planos);
    }

}

?>